💯 solving-algo | March 09, 2021
https://leetcode.com/problems/product-of-array-except-self/
class Solution:
def productExceptSelf(self, nums: List[int]) -> List[int]:
out = []
# 자기 자신을 제외하고 왼쪽 곱셈
p = 1
for i in range(len(nums)):
out.append(p)
p *= nums[i]
# 왼쪽 곱셈 결과에 오른쪽 곱셈 결과
p = 1
for i in range(len(nums) - 1, -1, -1):
out[i] *= p
p *= nums[i]
return out
나눗셈을 하지 않고 O(n)에 풀이하라는 제약 조건이 있었는데, 이 말은 미리 전체 곱셈 값을 구해놓고 자기 자신을 나눗셈 하지말라는 뜻이다.
그렇다면 풀이 방법은 자기 자신을 제외하고 왼쪽의 곱셈 결과와 오른쪽의 곱셈 결과를 곱해야 한다. (주석 참고)